package com.qwc.blog.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.qwc.blog.entity.Article;
import com.qwc.blog.entity.dto.ArticleRequestDto;
import com.qwc.blog.entity.dto.BlogArticleDto;
import com.qwc.blog.entity.vo.ArticleWithTagVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 文章元信息表 Mapper 接口
 * </p>
 *
 * @author qwc
 * @since 2022-01-24
 */
public interface ArticleMapper extends BaseMapper<Article> {

    /**
     * 获取分页数据
     * @param page
     * @param ids
     * @return
     */
    ArticleRequestDto<Article> selectPageDto(ArticleRequestDto<Article> page, @Param("ids") List<Integer> ids);

    /**
     * 关联文章分类
     * @param articleId
     * @param classifyIds
     * @return
     */
    int insertArticleClassify(@Param("articleId") Integer articleId, @Param("classifyIds") List<Integer> classifyIds);

    /**
     * 保存文章标签
     * @param articleId
     * @param tagIds
     * @return
     */
    int insertArticleTag(@Param("articleId") Integer articleId, @Param("tagIds") List<Integer> tagIds);

    /**
     * 删除文章分类
     * @param articleId
     * @return
     */
    int deleteClassifyByArticleId(Integer articleId);

    /**
     * 删除文章标签
     * @param articleId
     * @return
     */
    int deleteTagByArticleId(Integer articleId);

    /**
     * 删除批量的文章分类
     * @param ids
     * @return
     */
    int deleteArticleClassify(List<Integer> ids);

    /**
     * 删除批量的文章标签
     * @param ids
     * @return
     */
    int deleteArticleTag(List<Integer> ids);

    /**
     * 分页获取最新数据
     * @param page
     * @param dto
     * @return
     */
    Page<ArticleWithTagVo> pageWithTag(Page<Object> page,@Param("dto") BlogArticleDto dto);

    /**
     * 根据分类获取分页数据
     * @param page
     * @param ids
     * @return
     */
    Page<ArticleWithTagVo> pageWithTagByClassifyId(Page<Object> page,@Param("ids") List<Integer> ids);
}
